package controllers;

import java.util.Set;

import models.Objetivo;
import models.GrupoMuscular;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import play.mvc.Security;
import dao.DAOObjetivo;
import views.html.objetivo.*;

@Security.Authenticated(Seguranca.class)
public class ObjetivoControle extends Controller {

	private static Form<Objetivo> formObjetivo = new Form<Objetivo>(Objetivo.class);

	public static Result index() {
		return ok(views.html.objetivo.index.render(""));
	}

	public static Result cadastrarView(){

		DAOObjetivo dao = new DAOObjetivo();
		try {
			Set<Objetivo> objetivo = dao.select();
			return ok(views.html.objetivo.cadastrar.render());
		} catch (Exception e) {
			return internalServerError("Erro ao recuperar objetivos.");
		}

	}

	public static Result editarView(int id){
		DAOObjetivo dao = new DAOObjetivo();
		try{
			Set<Objetivo> objetivo = dao.select();

			Objetivo u = new Objetivo();
			u = dao.select(id);
			return ok(views.html.objetivo.editar.render(u));
		}catch(Exception e){
			return internalServerError("Erro ao visualizar Objetivo.");
		}
	}


	public static Result listarView(){
		DAOObjetivo dao = new DAOObjetivo();
		try {
			Set<Objetivo> objetivos = dao.select();
			return ok(views.html.objetivo.listar.render(objetivos));
		} catch (Exception e) {
			return internalServerError("Erro ao visualizar Objetivos.");
		}

	}

	public static Result cadastrar(){
		Form<Objetivo> novoObjetivo = formObjetivo.bindFromRequest();
		Objetivo objetivo = novoObjetivo.get();
		//Objetivo.inserir(Objetivo);
		DAOObjetivo dao = new DAOObjetivo();
		try{
			//System.out.println("\n\n\n"+ objetivo +"aquiiiiiiiiii\n\n\n");
			dao.insert(objetivo);

			return listarView();
			//return ok(views.html.index.render("Objetivo Cadastrado com sucesso."));
		}catch(Exception e){
			return ok(views.html.objetivo.index.render("Erro ao cadastrar Objetivo."));
		}
	}

	public static Result editar(){
		Form<Objetivo> novoObjetivo = formObjetivo.bindFromRequest();
		Objetivo objetivo = novoObjetivo.get();
		DAOObjetivo dao = new DAOObjetivo();
		try{
			dao.update(objetivo);
			return listarView();
		}catch(Exception e){
			e.printStackTrace();
			return ok(views.html.objetivo.index.render("Erro ao editar Objetivo."));
		}

	}

	public static Result remover(){
		Form<Objetivo> novoObjetivo = formObjetivo.bindFromRequest();
		Objetivo objetivo = novoObjetivo.get();
		DAOObjetivo dao = new DAOObjetivo();
		try{
			dao.delete(objetivo);
			return listarView();
		}catch(Exception e){
			e.printStackTrace();
			return ok(views.html.objetivo.index.render("Erro ao remover Objetivo."));
		}
	}

}